package com.zmm.zebulon.module.bpm.biz.framework.flowable.core.behavior.script;

import com.zmm.zebulon.module.bpm.enums.definition.BpmTaskRuleScriptEnum;
import org.flowable.engine.delegate.DelegateExecution;

import java.util.Set;

/**
 * description: Bpm 任务分配的自定义 Script 脚本<br>
 * <p>
 *     使用场景：
 *     1. 设置审批人为发起人
 *     2. 设置审批人为发起人的 Leader
 *     3. 甚至审批人为发起人的 Leader 的 Leader
 * </p>
 *
 * @author zebulon
 * package com.zmm.zebulon.module.bpm.biz.framework.flowable.core.behavior.script
 * name: BpmTaskAssignScript
 * date 2024/1/10 23:40
 */
public interface BpmTaskAssignScript {

    /**
     * 基于执行任务，获得任务的候选用户们
     *
     * @param execution 执行任务
     * @return 候选人用户的编号数组
     */
    Set<Long> calculateTaskCandidateUsers(DelegateExecution execution);

    /**
     * 获得枚举值
     *
     * @return 枚举值
     */
    BpmTaskRuleScriptEnum getEnum();
}
